<template>
	<view class="content">
		<web-view :src="url" v-if="url"></web-view>
	</view>
</template>

<script lang="ts" setup>
import { ref } from 'vue';
import { onShow, onLoad } from '@dcloudio/uni-app';
import { http } from '@/utils/http';

const url = ref('');
const viewerUrl = ref('/static/pdf/web/viewer.html');
const fileUrl = ref('');

// 公用获取url方法
function getUrl () {
	url.value = viewerUrl.value + '?file=' + encodeURIComponent(fileUrl.value); // encodeURIComponent 函数可把字符串作为 URI 组件进行编码;
}

onShow(() => {});
onLoad((option) => {
	if (option.url != undefined && option.url != 'undefined' && option.url != '' && option.url != null) {
		fileUrl.value = option.url;
		
		// #ifdef H5
		getUrl()
		// #endif
		
		// 判断是手机系统：安卓，使用pdf.js
		// #ifdef APP-PLUS
		if(plus.os.name === 'Android') {
		    //将本地URL路径转换成平台绝对路径
			if (!fileUrl.value.startsWith("http")) {
				fileUrl.value = plus.io.convertLocalFileSystemURL(fileUrl.value)
				getUrl()
			} else {
				getUrl()
			}
		}
		// ios，直接访问pdf所在路径
		else {
			url.value = encodeURIComponent(fileUrl.value);
		}
		// #endif
		
	} else {
		//无参就不预览PDF
		uni.showModal({
			//弹出提示
			title: '系统提示', //提示的标题
			content: 'pdf地址参数无效', //提示的内容
			confirmText: '返回', //取消按钮的文字，默认为"取消"
			showCancel: false, //是否显示取消按钮，默认为 true
			success: (res) => {
				if (res.confirm) {
					//监听弹窗返回按钮
					uni.navigateBack(); //返回上一页
				}
			}
		});
	}
});

//以发起请求的方式获取预览PDF
// function getHttpPdf() {
// 	http({
// 		url: '/xxx/xxx/xxx/previewPdf/'+option.id,
// 		method: 'GET',
// 		header: { 'Authorization': 'Bearer ' + uni.getStorageSync('token') },//自定义请求头
// 		responseType: 'arraybuffer',
// 		success: (res) => {
// 			let blob = new Blob([res.data],{type:'application/pdf;chartset=UTF-8'});//转换blob数据类型
// 			let href = URL.createObjectURL(blob);
// 			url.value =viewerUrl.value+'?file='+encodeURIComponent(href);// encodeURIComponent 函数可把字符串作为 URI 组件进行编码;
// 		},
// 	});
// }
</script>

<style lang="scss" scoped>
.content {
	padding: $uni-page-padding;
	button {
		width: 70vw;
		margin-top: 20vh;
	}
}
</style>
